Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/plyer/utils.py 0.2.0 (3a8e8300) Text, 9.55 KB

T8b949e'''
Utils
=====

'''
Te6edf3__all__ Tff7b72= Tb4b4b4(Ta5d6ff'Ta5d6ffplatformTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffreifyTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffdeprecatedTa5d6ff'Tb4b4b4)

Tff7b72from T7ee787os Tff7b72import Te6edf3environ
Tff7b72from T7ee787os Tff7b72import Te6edf3path
Tff7b72from T7ee787sys Tff7b72import Te6edf3platform Tff7b72as Te6edf3_sys_platform
Tff7b72import T7ee787sys


Tff7b72class T56d364PlatformTb4b4b4:
T8b949e'''
Refactored to class to allow module function to be replaced
with module variable.
'''

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_platform_ios Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_platform_android Tff7b72= Tff7b72None

Tff7b72def Tff7b72__eq__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3other Tff7b72== Tff7b72selfTff7b72.Td2a8ff_get_platformTb4b4b4(Tb4b4b4)

Tff7b72def Tff7b72__ne__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3otherTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3other Tff7b72!= Tff7b72selfTff7b72.Td2a8ff_get_platformTb4b4b4(Tb4b4b4)

Tff7b72def Tff7b72__str__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ff_get_platformTb4b4b4(Tb4b4b4)

Tff7b72def Tff7b72__repr__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ffplatform name: Tffea00\'Tffd700{platform}Tffea00\'Ta5d6ff from: Tffea00\nTffd700{instance}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(
Te6edf3platformTff7b72=Tff7b72selfTff7b72.Td2a8ff_get_platformTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3instanceTff7b72=Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__repr__Tb4b4b4(Tb4b4b4)
Tb4b4b4)

Tff7b72def Tff7b72__hash__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ff_get_platformTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__hash__Tb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ff_get_platformTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:

Tff7b72if Tff7b72selfTff7b72.Td2a8ff_platform_android Tff7b72is Tff7b72NoneTb4b4b4:
T8b949e# sys.getandroidapilevel is defined as of Python 3.7
T8b949e# ANDROID_ARGUMENT and ANDROID_PRIVATE are 2 environment variables
T8b949e# from python-for-android project
Tff7b72selfTff7b72.Td2a8ff_platform_android Tff7b72= Tffa657hasattrTb4b4b4(Te6edf3sysTb4b4b4, Ta5d6ff'Ta5d6ffgetandroidapilevelTa5d6ff'Tb4b4b4) Tff7b72or \
Ta5d6ff'Ta5d6ffANDROID_ARGUMENTTa5d6ff' Tff7b72in Te6edf3environ

Tff7b72if Tff7b72selfTff7b72.Td2a8ff_platform_ios Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_platform_ios Tff7b72= Tb4b4b4(Te6edf3environTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffKIVY_BUILDTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4) Tff7b72== Ta5d6ff'Ta5d6ffiosTa5d6ff'Tb4b4b4)

T8b949e# On android, _sys_platform return 'linux2', so prefer to check the
T8b949e# import of Android module than trying to rely on _sys_platform.

Tff7b72if Tff7b72selfTff7b72.Td2a8ff_platform_android Tff7b72is Tff7b72TrueTb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ffandroidTa5d6ff'
Tff7b72elif Tff7b72selfTff7b72.Td2a8ff_platform_ios Tff7b72is Tff7b72TrueTb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ffiosTa5d6ff'
Tff7b72elif Te6edf3_sys_platform Tff7b72in Tb4b4b4(Ta5d6ff'Ta5d6ffwin32Ta5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ffcygwinTa5d6ff'Tb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ffwinTa5d6ff'
Tff7b72elif Te6edf3_sys_platform Tff7b72== Ta5d6ff'Ta5d6ffdarwinTa5d6ff'Tb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6ffmacosxTa5d6ff'
Tff7b72elif Te6edf3_sys_platformTb4b4b4[Tb4b4b4:T79c0ff5Tb4b4b4] Tff7b72== Ta5d6ff'Ta5d6fflinuxTa5d6ff'Tb4b4b4:
Tff7b72return Ta5d6ff'Ta5d6fflinuxTa5d6ff'
Tff7b72return Ta5d6ff'Ta5d6ffunknownTa5d6ff'


Te6edf3platform Tff7b72= Te6edf3PlatformTb4b4b4(Tb4b4b4)


Tff7b72class T56d364ProxyTb4b4b4:
T8b949e'''
Based on http://code.activestate.com/recipes/496741-object-proxying
version by Tomer Filiba, PSF license.
'''

Tff7b72__slots__ Tff7b72= Tb4b4b4[Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff_nameTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff_facadeTa5d6ff'Tb4b4b4]

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3facadeTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72selfTb4b4b4)
Tffa657objectTff7b72.Td2a8ff__setattr__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4, Tff7b72NoneTb4b4b4)
Tffa657objectTff7b72.Td2a8ff__setattr__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_nameTa5d6ff'Tb4b4b4, Te6edf3nameTb4b4b4)
Tffa657objectTff7b72.Td2a8ff__setattr__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_facadeTa5d6ff'Tb4b4b4, Te6edf3facadeTb4b4b4)

Tff7b72def Td2a8ff_ensure_objTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3obj Tff7b72= Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)
Tff7b72if Te6edf3objTb4b4b4:
Tff7b72return Te6edf3obj
T8b949e# do the import
Tff7b72tryTb4b4b4:
Te6edf3name Tff7b72= Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_nameTa5d6ff'Tb4b4b4)
Te6edf3module Tff7b72= Ta5d6ff'Ta5d6ffplyer.platforms.Tffd700{}Ta5d6ff.Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(
Te6edf3platformTb4b4b4, Te6edf3nameTb4b4b4)
Te6edf3mod Tff7b72= Tffa657__import__Tb4b4b4(Te6edf3moduleTb4b4b4, Te6edf3fromlistTff7b72=Ta5d6ff'Ta5d6ff.Ta5d6ff'Tb4b4b4)
Te6edf3obj Tff7b72= Te6edf3modTff7b72.Td2a8ffinstanceTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149ExceptionTb4b4b4:
Tff7b72import T7ee787traceback
Te6edf3tracebackTff7b72.Td2a8ffprint_excTb4b4b4(Tb4b4b4)
Te6edf3facade Tff7b72= Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_facadeTa5d6ff'Tb4b4b4)
Te6edf3obj Tff7b72= Te6edf3facadeTb4b4b4(Tb4b4b4)

Tffa657objectTff7b72.Td2a8ff__setattr__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4, Te6edf3objTb4b4b4)
Tff7b72return Te6edf3obj

Tff7b72def Tff7b72__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Tff7b72None

Tff7b72if Te6edf3name Tff7b72== Ta5d6ff'Ta5d6ff__doc__Ta5d6ff'Tb4b4b4:
Tff7b72return Te6edf3result

T8b949e# run _ensure_obj func, result in _obj
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)

T8b949e# return either Proxy instance or platform-dependent implementation
Te6edf3result Tff7b72= Tffa657getattrTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4, Te6edf3nameTb4b4b4)
Tff7b72return Te6edf3result

Tff7b72def Tff7b72__delattr__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)
Tffa657delattrTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4, Te6edf3nameTb4b4b4)

Tff7b72def Tff7b72__setattr__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3nameTb4b4b4, Te6edf3valueTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)
Tffa657setattrTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4, Te6edf3nameTb4b4b4, Te6edf3valueTb4b4b4)

Tff7b72def Tff7b72__bool__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)
Tff7b72return Tffa657boolTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4)

Tff7b72def Tff7b72__str__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)
Tff7b72return Tffa657strTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4)

Tff7b72def Tff7b72__repr__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_ensure_objTa5d6ff'Tb4b4b4)Tb4b4b4(Tb4b4b4)
Tff7b72return Tffa657reprTb4b4b4(Tffa657objectTff7b72.Td2a8ff__getattribute__Tb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff'Ta5d6ff_objTa5d6ff'Tb4b4b4)Tb4b4b4)


Tff7b72def Td2a8ffwhereis_exeTb4b4b4(Te6edf3programTb4b4b4)Tb4b4b4:
T8b949e''' Tries to find the program on the system path.
Returns the path if it is found or None if it's not found.
'''
Te6edf3path_split Tff7b72= Ta5d6ff'Ta5d6ff;Ta5d6ff' Tff7b72if Te6edf3platform Tff7b72== Ta5d6ff'Ta5d6ffwinTa5d6ff' Tff7b72else Ta5d6ff'Ta5d6ff:Ta5d6ff'
Tff7b72for Te6edf3pth Tff7b72in Te6edf3environTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff'Ta5d6ffPATHTa5d6ff'Tb4b4b4, Ta5d6ff'Ta5d6ff'Tb4b4b4)Tff7b72.Td2a8ffsplitTb4b4b4(Te6edf3path_splitTb4b4b4)Tb4b4b4:
Te6edf3folder Tff7b72= Te6edf3pathTff7b72.Td2a8ffisdirTb4b4b4(Te6edf3pathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pthTb4b4b4, Te6edf3programTb4b4b4)Tb4b4b4)
Te6edf3available Tff7b72= Te6edf3pathTff7b72.Td2a8ffexistsTb4b4b4(Te6edf3pathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pthTb4b4b4, Te6edf3programTb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3available Tff7b72and Tff7b72not Te6edf3folderTb4b4b4:
Tff7b72return Te6edf3pathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3pthTb4b4b4, Te6edf3programTb4b4b4)
Tff7b72return Tff7b72None


Tff7b72class T56d364reifyTb4b4b4:
T8b949e'''
Put the result of a method which uses this (non-data) descriptor decorator
in the instance dict after the first call, effectively replacing the
decorator with an instance variable.

It acts like @property, except that the function is only ever called once;
after that, the value is cached as a regular attribute. This gives you lazy
attribute creation on objects that are meant to be immutable.

Taken from the `Pyramid project <https://pypi.python.org/pypi/pyramid/>`_.

To use this as a decorator::

@reify
def lazy(self):
...
return hard_to_compute_int
first_time = self.lazy # lazy is reify obj, reify.__get__() runs
second_time = self.lazy # lazy is hard_to_compute_int
'''

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3funcTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffunc Tff7b72= Te6edf3func
Tff7b72selfTff7b72.Td2a8ff__doc__ Tff7b72= Te6edf3funcTff7b72.Td2a8ff__doc__

Tff7b72def Tff7b72__get__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3instTb4b4b4, Tff7b72clsTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3inst Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72self
Te6edf3retval Tff7b72= Tff7b72selfTff7b72.Td2a8fffuncTb4b4b4(Te6edf3instTb4b4b4)
Tffa657setattrTb4b4b4(Te6edf3instTb4b4b4, Tff7b72selfTff7b72.Td2a8fffuncTff7b72.Td2a8ff__name__Tb4b4b4, Te6edf3retvalTb4b4b4)
Tff7b72return Te6edf3retval


Tff7b72def Td2a8ffdeprecatedTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4:
T8b949e'''
This is a decorator which can be used to mark functions and classes as
deprecated. It will result in a warning being emitted when a deprecated
function is called or a new instance of a class created.

In case of classes, the warning is emitted before the __new__ method
of the decorated class is called, therefore a way before the __init__
method itself.
'''

Tff7b72import T7ee787warnings
Tff7b72from T7ee787inspect Tff7b72import Te6edf3stack
Tff7b72from T7ee787functools Tff7b72import Te6edf3wraps
Tff7b72from T7ee787types Tff7b72import Te6edf3FunctionTypeTb4b4b4, Te6edf3MethodType

Te6edf3new_obj Tff7b72= Tff7b72None

T8b949e# wrap a function into a function emitting a deprecated warning
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3objTb4b4b4, Te6edf3FunctionTypeTb4b4b4)Tb4b4b4:

Tf0883e@wrapsTb4b4b4(Te6edf3objTb4b4b4)
Tff7b72def Td2a8ffnew_funcTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
T8b949e# get the previous stack frame and extract file, line and caller
T8b949e# stack() -> caller()
Te6edf3call_fileTb4b4b4, Te6edf3call_lineTb4b4b4, Te6edf3caller Tff7b72= Te6edf3stackTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4:T79c0ff4Tb4b4b4]

T8b949e# assemble warning
Te6edf3warning Tff7b72= Tb4b4b4(
Ta5d6ff'Ta5d6ffCall to deprecated function Tffd700{}Ta5d6ff in Tffd700{}Ta5d6ff line Tffd700{}Ta5d6ff. Ta5d6ff'
Ta5d6ff'Ta5d6ffCalled from Tffd700{}Ta5d6ff line Tffd700{}Ta5d6ff'
Ta5d6ff'Ta5d6ff by Tffd700{}Ta5d6ff().Tffea00\nTa5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(
Te6edf3objTff7b72.Td2a8ff__name__Tb4b4b4,
Te6edf3objTff7b72.Td2a8ff__code__Tff7b72.Td2a8ffco_filenameTb4b4b4,
Te6edf3objTff7b72.Td2a8ff__code__Tff7b72.Td2a8ffco_firstlineno Tff7b72+ T79c0ff1Tb4b4b4,
Te6edf3call_fileTb4b4b4, Te6edf3call_lineTb4b4b4, Te6edf3caller
Tb4b4b4)
Tb4b4b4)

Te6edf3warningsTff7b72.Td2a8ffwarnTb4b4b4(Ta5d6ff'Ta5d6ff[Tffd700{}Ta5d6ff] Tffd700{}Ta5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(Ta5d6ff'Ta5d6ffWARNINGTa5d6ff'Tb4b4b4, Te6edf3warningTb4b4b4)Tb4b4b4)

T8b949e# if there is a docstring present, emit docstring too
Tff7b72if Te6edf3objTff7b72.Td2a8ff__doc__Tb4b4b4:
Te6edf3warningsTff7b72.Td2a8ffwarnTb4b4b4(Te6edf3objTff7b72.Td2a8ff__doc__Tb4b4b4)

T8b949e# return function wrapper
Tff7b72return Te6edf3objTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Te6edf3new_obj Tff7b72= Te6edf3new_func

T8b949e# wrap a class into a class emitting a deprecated warning
T8b949e# obj is class, type(obj) is metaclass, metaclasses inherit from type
Tff7b72elif Tffa657isinstanceTb4b4b4(Tffa657typeTb4b4b4(Te6edf3objTb4b4b4)Tb4b4b4, Tffa657typeTb4b4b4)Tb4b4b4:
T8b949e# we have an access to the metaclass instance (class) and need to print
T8b949e# the warning when a class instance (object) is created with __new__
T8b949e# i.e. when calling Class()

Tff7b72def Td2a8ffobj_newTb4b4b4(Tff7b72clsTb4b4b4, Te6edf3childTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
T8b949e'''
Custom metaclass instance's __new__ method with deprecated warning.
Calls the original __new__ method afterwards.
'''
T8b949e# get the previous stack frame and extract file, line and caller
T8b949e# stack() -> caller()
Te6edf3call_fileTb4b4b4, Te6edf3call_lineTb4b4b4, Te6edf3caller Tff7b72= Te6edf3stackTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4:T79c0ff4Tb4b4b4]
Te6edf3loc_file Tff7b72= Te6edf3objTff7b72.Td2a8ff__module__

Te6edf3warningsTff7b72.Td2a8ffwarnTb4b4b4(
Ta5d6ff'Ta5d6ff[Tffd700{}Ta5d6ff] Creating an instance of a deprecated class Tffd700{}Ta5d6ff in Tffd700{}Ta5d6ff.Ta5d6ff'
Ta5d6ff'Ta5d6ff Called from Tffd700{}Ta5d6ff line Tffd700{}Ta5d6ff by Tffd700{}Ta5d6ff().Tffea00\nTa5d6ff'Tff7b72.Td2a8ffformatTb4b4b4(
Ta5d6ff'Ta5d6ffWARNINGTa5d6ff'Tb4b4b4, Te6edf3objTff7b72.Td2a8ff__name__Tb4b4b4, Te6edf3loc_fileTb4b4b4,
Te6edf3call_fileTb4b4b4, Te6edf3call_lineTb4b4b4, Te6edf3caller
Tb4b4b4)
Tb4b4b4)

T8b949e# if there is a docstring present, emit docstring too
Tff7b72if Te6edf3objTff7b72.Td2a8ff__doc__Tb4b4b4:
Te6edf3warningsTff7b72.Td2a8ffwarnTb4b4b4(Te6edf3objTff7b72.Td2a8ff__doc__Tb4b4b4)

T8b949e# make sure nothing silly gets into the function
Tff7b72assert Te6edf3obj Tff7b72is Tff7b72cls

T8b949e# we are creating a __new__ for a class that inherits from
T8b949e# a deprecated class, therefore in this particular case
T8b949e# MRO is (child, cls, object) > (cls, object)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3childTff7b72.Td2a8ff__mro__Tb4b4b4) Tff7b72> Tffa657lenTb4b4b4(Tff7b72clsTff7b72.Td2a8ff__mro__Tb4b4b4)Tb4b4b4:
Tff7b72assert Tff7b72cls Tff7b72is Te6edf3childTff7b72.Td2a8ff__mro__Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Tb4b4b4(Tff7b72clsTff7b72.Td2a8ff__mro__Tb4b4b4, Te6edf3childTff7b72.Td2a8ff__mro__Tb4b4b4)

T8b949e# we are creating __new__ directly for the deprecated class
T8b949e# therefore MRO is the same for parent and child class
Tff7b72elif Tffa657lenTb4b4b4(Te6edf3childTff7b72.Td2a8ff__mro__Tb4b4b4) Tff7b72== Tffa657lenTb4b4b4(Tff7b72clsTff7b72.Td2a8ff__mro__Tb4b4b4)Tb4b4b4:
Tff7b72assert Tff7b72cls Tff7b72is Te6edf3child

T8b949e# return the class back with the extended __new__ method
Tff7b72return Te6edf3objTff7b72.Td2a8ff__old_new__Tb4b4b4(Te6edf3childTb4b4b4)

T8b949e# back up the old __new__ method and create an extended
T8b949e# __new__ method that emits deprecated warnings
Te6edf3objTff7b72.Td2a8ff__old_new__ Tff7b72= Te6edf3objTff7b72.Td2a8ff__new__
Te6edf3objTff7b72.Td2a8ff__new__ Tff7b72= Te6edf3MethodTypeTb4b4b4(Te6edf3obj_newTb4b4b4, Te6edf3objTb4b4b4)
Te6edf3new_obj Tff7b72= Te6edf3obj

T8b949e# return a function wrapper or an extended class
Tff7b72return Te6edf3new_obj


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────